package embed

import "fmt"

type user struct {
	name  string
	email string
}

func (u *user) notify() {
	fmt.Printf("Sending user email to %s<%s>\n", u.name, u.email)
}

type admin struct {
	user  // 嵌入类型(注意这里没有声明形式参数)
	level string
}

func TestGo() {
	ad := admin{
		user: user{
			name:  "john",
			email: "john@163.com",
		},
		level: "super",
	}
	// 可以直接访问内部类型的方法
	ad.user.notify()
	// 内部类型的方法也可以被提升到外部类型
	ad.notify()
}
